package com.usian.controller;

import com.usian.pojo.User;
import com.usian.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class Login {
    @Autowired
    UserService userService;

    /**
     * 用于返回登录页面
     * @param request 判断是否已经登录，已经登录就直接跳转
     * @return  返回登录页面模板
     */
    @GetMapping("/login")  // 登录页面网址
    public String login(HttpServletRequest request) {
        HttpSession session = request.getSession();     // 获取用户登录信息
        // 如果已经登录，则重定向直接跳转到判断界面
        if (session.getAttribute("user") != null) {
            return "redirect:/manage";
        }

        // 如果没有登录信息，则直接返回登录页面
        return "login";
    }

    /**
     * 用于验证账号和密码是否正确
     *
     * @param name   账号信息
     * @param pwd   密码信息
     * @param request    用于获取Session
     * @return 登录成功跳转管理界面，失败返回错误信息到登录页面
     */
    @PostMapping("/manage/verification")        // 失败错误信息页面网址
    public String verification(@RequestParam("name") String name,
                               @RequestParam("pwd") String pwd,
                               HttpServletRequest request) {

        if (name.equals("") || pwd.equals("")) {   // 密码为空，重新登录
            return "login";
        } else {
            User user = userService.login(name, pwd);  // 从数据库中获得与输入相同的用户
            if (user == null) {         // 没有该用户
                return "login";
            }
            // 创建 session
            HttpSession session = request.getSession();
            session.setAttribute("user", user);
        }

        return "redirect:/manage";             // 登录成功进行页面选择跳转
    }
}
